package com.pb.infra.param.service;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.pb.infra.oth.entity.common.Page;
import com.pb.infra.oth.entity.common.Result;
import com.pb.infra.oth.util.RedisUtil;
import com.pb.infra.oth.util.StringUtil;
import com.pb.infra.param.entity.pbbase.CapBaseInfoConfig;
import com.pb.infra.param.mapper.CapBaseInfoConfigMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * @ filename:
 * @ description:
 * @ author:lzy
 * @ version:1.0.0
 */
@Service
public class CapBaseInfoConfigService {
    @Resource
    CapBaseInfoConfigMapper capBaseInfoConfigMapper;
    @Resource
    RedisUtil redisUtil;

    public Result select(Map<String, Object> map, Page page){
        if (page != null && page.getPageIndex() != null && page.getPageSize() != null) {
            PageHelper.startPage(page.getPageIndex(), page.getPageSize());
        }

        CapBaseInfoConfig capBaseInfoConfig = new CapBaseInfoConfig();

        if (!StringUtil.isEmpty(map.get("seqno"))){
            capBaseInfoConfig.setSeqno((String)map.get("seqno"));
        }
        if (!StringUtil.isEmpty(map.get("id"))){
            capBaseInfoConfig.setId((String)map.get("id"));
        }
        if (!StringUtil.isEmpty(map.get("value"))){
            capBaseInfoConfig.setValue((String)map.get("value"));
        }

        if (!StringUtil.isEmpty(map.get("describe"))){
            capBaseInfoConfig.setDescribe((String) map.get("describe"));
        }
        if (!StringUtil.isEmpty(map.get("systemEnv"))){
            capBaseInfoConfig.setSystemEnv((String) map.get("systemEnv"));
        }

        List<CapBaseInfoConfig> list = capBaseInfoConfigMapper.select(capBaseInfoConfig);
        return Result.ok(new PageInfo<CapBaseInfoConfig>(list).getTotal(),list);
    }

    public String select(String id, String systemEnv){
        CapBaseInfoConfig capBaseInfoConfig = new CapBaseInfoConfig();
        capBaseInfoConfig.setId(id);
        capBaseInfoConfig.setSystemEnv(systemEnv);
        List<CapBaseInfoConfig> list = capBaseInfoConfigMapper.selectarameter(capBaseInfoConfig);
        if (list.size()>0){
            return list.get(0).getValue();
        }else {
            return "";
        }
    }

    @Transactional
    public void delete(List<String> paramMap){
        for (String seqno : paramMap) {
            capBaseInfoConfigMapper.deleteByPrimaryKey(seqno);
        }
    }

    public Result insert(CapBaseInfoConfig capBaseInfoConfig){
        capBaseInfoConfig.setSeqno(String.valueOf(redisUtil.getId()));
        capBaseInfoConfigMapper.insertSelective(capBaseInfoConfig);
        return Result.OK_EMPTY;
    }

    public Result update(CapBaseInfoConfig capBaseInfoConfig){
        capBaseInfoConfigMapper.updateByPrimaryKey(capBaseInfoConfig);
        return Result.OK_EMPTY;
    }


}
